<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BDialog</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BDialog">
			<h1>BDialog</h1>
			<p>继承自<a href="BWidget.html">BWidget</a></p>
			<p id="resume">BDialog是对话框控件，常作为独立的窗口。<a href="#desc">详细</a></p>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right"/><td><a href="#BDialog(BWidget*)">BDialog</a><text>(BWidget* parent = 0);</text></td></tr>
				<tr><td align="right"/><td><a href="#BDialog(const BString&,BWidget*)">BDialog</a><text>(const BString&amp; title, BWidget* parent = 0);</text></td></tr>
				<tr><td align="right"/><td><a href="#~BDialog()">~BDialog</a><text>();</text></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#setTitle(const BString&)">setTitle</a><text>(const BString&amp; title);</text></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#setIcon(BIcon*)">setIcon</a><text>(BIcon* icon);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#setFrameless(bool)">setFrameless</a><text>(bool frameless);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#setIcon(StyleIcon)">setIcon</a><text>(StyleIcon iconName);</text></td></tr>
				<tr><td align="right">void </td><td><a href="#setTitleVisible(bool)">setTitleVisible</a><text>(bool titleVisible);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#titleVisible()">titleVisible</a><text>() const;</text></td></tr>
				<tr><td align="right">void </td><td><a href="#setTitleAlign(Align)">setTitleAlign</a><text>(Align titleAlign);</text></td></tr>
				<tr><td align="right">Align </td><td><a href="#titleAlign()">titleAlign</a><text>() const;</text></td></tr>
				<tr><td align="right">void </td><td><a href="#setTitleForm(Form)">setTitleForm</a><text>(Form titleForm);</text></td></tr>
				<tr><td align="right">Form </td><td><a href="#titleForm()">titleForm</a><text>() const;</text></td></tr>
				<tr><td align="right">void </td><td><a href="#setTitleButtonAlign(Align)">setTitleButtonAlign</a><text>(Align titleButtonAlign);</text></td></tr>
				<tr><td align="right">Align </td><td><a href="#titleButtonAlign()">titleButtonAlign</a><text>() const;</text></td></tr>
				<tr><td align="right">BButton* </td><td><a href="#addTitleButton(Button)">addTitleButton</a><text>(Button button);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#addTitleButton(BButton*)">addTitleButton</a><text>(BButton* button);</text></td></tr>
				<tr><td align="right">BButton* </td><td><a href="#insertTitleButton(int, Button)">insertTitleButton</a><text>(int pos, Button button);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#insertTitleButton(int, BButton*)">insertTitleButton</a><text>(int pos, BButton* button);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#removeTitleButton(Button)">removeTitleButton</a><text>(Button button);</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#removeTitleButton(BButton*)">removeTitleButton</a><text>(BButton* button);</text></td></tr>
				<tr><td align="right">void </td><td><a href="#clearTitleButtons()">clearTitleButtons</a><text>();</text></td></tr>
				<tr><td align="right">int </td><td><a href="#titleButtonCount()">titleButtonCount</a><text>() const;</text></td></tr>
				<tr><td align="right">BButton* </td><td><a href="#titleButton(int)">titleButton</a><text>(int index);</text></td></tr>
				<tr><td align="right">const BButton* </td><td><a href="#titleButton(int)">titleButton</a><text>(int index) const;</text></td></tr>
				<tr><td align="right">BButton* </td><td><a href="#titleButton(Button)">titleButton</a><text>(Button button);</text></td></tr>
				<tr><td align="right">const BButton* </td><td><a href="#titleButton(Button)">titleButton</a><text>(Button button) const;</text></td></tr>
				<tr><td align="right">BButton* </td><td><a href="#titleButton(const BString&)">titleButton</a><text>(const BString&amp; name);</text></td></tr>
				<tr><td align="right">const BButton* </td><td><a href="#titleButton(const BString&)">titleButton</a><text>(const BString&amp; name) const;</text></td></tr>
				<tr><td align="right">bool </td><td><a href="#show(ShowState)">show</a><text>(ShowState state = Show_None);</text></td></tr>
				<tr><td align="right">ShowState </td><td><a href="#showState()">showState</a><text>() const;</text></td></tr>
				<tr><td align="right">void </td><td><a href="#close()">close</a><text>();</text></td></tr>
				<tr><td align="right">void </td><td><a href="#close(const BValue&)">close</a><text>(const BValue&amp; result);</text></td></tr>
				<tr><td align="right">void </td><td><a href="#setResult(const BValue&)">setResult</a><text>(const BValue&amp; result);</text></td></tr>
				<tr><td align="right">const BValue&amp; </td><td><a href="#result()">result</a><text>() const;</text></td></tr>
				<tr><td align="right">const BValue&amp; </td><td><a href="#execute()">execute</a><text>();</text></td></tr>
				<tr><td align="right">virtual BSize </td><td><a href="#sizeHint()">sizeHint</a><text>() const;</text></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#input(const BString&, const BValue&)">input</a><text>(const BString&amp; text, const BValue&amp; value);</text></td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#query(const BString&, BValue&)">query</a><text>(const BString&amp; text, BValue&amp; value) const;</text></td></tr>
				<tr><td align="right">using </td><td><a href="#BObject::query;()">BObject::query;</a></td></tr>
			</table>
			<h2>protected</h2>
			<table id="protected">
				<tr><td align="right">virtual void </td><td><a href="#event(const BEvent&)">event</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#popupEvent(const BEvent&)">popupEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#closeEvent(const BEvent&)">closeEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#activeEvent(const BEvent&)">activeEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#resizeEvent(const BEvent&)">resizeEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#styleEvent(const BEvent&)">styleEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#freshEvent(const BEvent&)">freshEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#paintEvent(const BEvent&)">paintEvent</a><text>(const BEvent&amp; event);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseEnterEvent(const BMouseEvent&)">mouseEnterEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseLeaveEvent(const BMouseEvent&)">mouseLeaveEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mousePressEvent(const BMouseEvent&)">mousePressEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseReleaseEvent(const BMouseEvent&)">mouseReleaseEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseMoveEvent(const BMouseEvent&)">mouseMoveEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseWheelEvent(const BMouseEvent&)">mouseWheelEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseDoubleClickEvent(const BMouseEvent&)">mouseDoubleClickEvent</a><text>(const BMouseEvent&amp; mouseEvent);</text></td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>BDialog是对话框控件，常作为独立的窗口。初始状态下对话框不显示，使用方法execute()运行对话框，在功能运行完成时才会返回。而当使用popup()方法弹出对话框时，其将只是显示出来。当对话框运行完成时会存在一个结果数值，可使用方法result()取得。使用方法close(result)，可结束对话框运行。</p><pre>BDialog* dialog = new BDialog("title");
const BValule& result = dialog->execute();</pre><p>默认情况下对话框会显示标题及图标，并提供一个关闭按钮，可添加或插入更多的按钮。各个标题按钮被点击时将结束此对话框的运行，并且被点击的按钮的资产值将作为结果被返回。各个标题按钮使用一个横向布局器（BHBoxLayout）管理，其名称为"buttons"，布局器栖于顶部（Part_Top）。</p><p>对话框还会在无调整事件时，对框体进行位置居中和尺寸自适应，以使用对话框看起来更好。当位置被主动调整过将不再进行居中调整。当尺寸被人为调整过将不会再对自身的尺寸进行适应性调整。</p><h4>信号表：</h4><table>
					<tr><td>Signal_ResultChanged</td><td>结果值被改变时发出，值为const BValue&amp; value。</td></tr>
					<tr><td>Signal_Close</td><td>关闭对话框时发出，值为const BValue&amp; value。</td></tr></table>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BDialog(BWidget*)">
				<h3>BDialog(BWidget* parent = 0);</h3>
				<p>构造一个对话框，parent指定其父控件。</p>
			</div>
			<div id="BDialog(const BString&,BWidget*)">
				<h3>BDialog(const BString&amp; title, BWidget* parent = 0);</h3>
				<p>构造一个对话框，title指定标题文本，parent指定父控件。</p><a/>
			</div>
			<div id="~BDialog()">
				<h3>~BDialog();</h3>
				<p>析构一个对话框。此方法会断开与各个按钮的信号连接。</p>
			</div>
			<div id="setTitle(const BString&)">
				<h3>virtual bool setTitle(const BString&amp; title);</h3>
				<p>重写设置标题方法，若标题改变将刷新此控件。</p>
			</div>
			<div id="setIcon(BIcon*)">
				<h3>virtual bool setIcon(BIcon* icon);</h3>
				<p>重写设置控件的图标方法，若改变了图标则刷新此控件。</p>
			</div>
			<div id="setFrameless(bool)">
				<h3>virtual void setFrameless(bool frameless);</h3>
				<p>重写设置控件是否是无框架的方法，若修改成功则刷新此控件。</p>
			</div>
			<div id="setIcon(StyleIcon)">
				<h3>bool setIcon(StyleIcon iconName);</h3>
				<p>获得预设样式图标，并将其设置为此对话框的图标。</p>
			</div>
			<div id="setTitleVisible(bool)">
				<h3>void setTitleVisible(bool titleVisible);</h3>
				<p>设置是否显示标题及图标。</p>
			</div>
			<div id="titleVisible()">
				<h3>bool titleVisible() const;</h3>
				<p>获得标题是否显示。</p>
			</div>
			<div id="setTitleAlign(Align)">
				<h3>void setTitleAlign(Align titleAlign);</h3>
				<p>设置标题的对齐方式。</p>
			</div>
			<div id="titleAlign()">
				<h3>Align titleAlign() const;</h3>
				<p>获得标题的对齐方式。</p>
			</div>
			<div id="setTitleForm(Form)">
				<h3>void setTitleForm(Form titleForm);</h3>
			</div>
			<div id="titleForm()">
				<h3>Form titleForm() const;</h3>
			</div>
			<div id="setTitleButtonAlign(Align)">
				<h3>void setTitleButtonAlign(Align titleButtonAlign);</h3>
				<p>设置标题按钮的对齐方式，默认是放在右侧。</p>
			</div>
			<div id="titleButtonAlign()">
				<h3>Align titleButtonAlign() const;</h3>
				<p>获得标题按钮的对齐方式。</p>
			</div>
			<div id="addTitleButton(Button)">
				<h3>BButton* addTitleButton(Button button);</h3>
				<p>添加一个标题按钮到最右边，button指定新按钮的预设值。此方法会健一个预设按钮，为其赋予文本和图样。预设的按钮的资产值为指定的枚举值button。</p>
			</div>
			<div id="addTitleButton(BButton*)">
				<h3>bool addTitleButton(BButton* button);</h3>
				<p>添加一个标题按钮到最右边。</p>
			</div>
			<div id="insertTitleButton(int, Button)">
				<h3>BButton* insertTitleButton(int pos, Button button);</h3>
				<p>插入一个标题按钮到pos指定的位置，button指定新按钮的预设值。此方法会健一个预设按钮，为其赋予文本和图样。</p>
			</div>
			<div id="insertTitleButton(int, BButton*)">
				<h3>bool insertTitleButton(int pos, BButton* button);</h3>
				<p>插入一个标题按钮到pos指定的位置。注意：button的资产值将是点击他</p>
			</div>
			<div id="removeTitleButton(Button)">
				<h3>bool removeTitleButton(Button button);</h3>
				<p>移除掉一个资产值为button的标题按钮。</p>
			</div>
			<div id="removeTitleButton(BButton*)">
				<h3>bool removeTitleButton(BButton* button);</h3>
				<p>若button是此对话框的标题按钮，则移除它。</p>
			</div>
			<div id="clearTitleButtons()">
				<h3>void clearTitleButtons();</h3>
				<p>移除所有的标题按钮。</p>
			</div>
			<div id="titleButtonCount()">
				<h3>int titleButtonCount() const;</h3>
				<p>获得标题按钮的数量。</p>
			</div>
			<div id="titleButton(int)">
				<h3>BButton* titleButton(int index);</h3>
				<p>取得index位置的标题按钮。</p>
			</div>
			<div id="titleButton(int)">
				<h3>const BButton* titleButton(int index) const;</h3>
			</div>
			<div id="titleButton(Button)">
				<h3>BButton* titleButton(Button button);</h3>
				<p>取得资产数值为button的标题按钮。</p>
			</div>
			<div id="titleButton(Button)">
				<h3>const BButton* titleButton(Button button) const;</h3>
			</div>
			<div id="titleButton(const BString&)">
				<h3>BButton* titleButton(const BString&amp; name);</h3>
				<p>取得名称为name的标题按钮。</p>
			</div>
			<div id="titleButton(const BString&)">
				<h3>const BButton* titleButton(const BString&amp; name) const;</h3>
			</div>
			<div id="show(ShowState)">
				<h3>bool show(ShowState state = Show_None);</h3>
				<p>显示对话框，state指定显示的方式。此方法可使用对话框最大化，最小化显示。</p>
			</div>
			<div id="showState()">
				<h3>ShowState showState() const;</h3>
				<p>获得对话框当前的显示方式的值。</p>
			</div>
			<div id="close()">
				<h3>void close();</h3>
			</div>
			<div id="close(const BValue&)">
				<h3>void close(const BValue&amp; result);</h3>
				<p>关闭对话框，result为给定的结果值。此方法会产生关闭事件，隐藏对话框并使其execute()中的运行结束。</p>
			</div>
			<div id="setResult(const BValue&)">
				<h3>void setResult(const BValue&amp; result);</h3>
				<p>设置此对话框的结果值，这方法不会关闭对话框，只是改变其结果值。若结果值被修改成功则发出信号：Signal_ResultChanged。</p>
			</div>
			<div id="result()">
				<h3>const BValue&amp; result() const;</h3>
				<p>获得此对话框的结果值。</p>
			</div>
			<div id="execute()">
				<h3>const BValue&amp; execute();</h3>
				<p>弹出对话框，并进入本地运行模式，直到运行结束此方法才会返回。要结束对话框运行只要隐藏它即可。</p><p>注意：每次调用此方法时，框体的自动居中和尺寸自适应效果会重置，所以会再次对框体进行调整。</p>
			</div>
			<div id="sizeHint()">
				<h3>virtual BSize sizeHint() const;</h3>
				<p>计算合适的对话框尺寸，此方法会为标题内容和标题按钮保留足够的空间。</p>
			</div>
			<div id="input(const BString&, const BValue&)">
				<h3>virtual bool input(const BString&amp; text, const BValue&amp; value);</h3>
				<p>输入表如下：</p><table>
					<tr><td>centering</td><td>设置自动居中是否开启，值为bool centering。</td></tr>
					<tr><td>adapting</td><td>设置自适应尺寸是否开启，值为bool adapting。</td></tr></table>
			</div>
			<div id="query(const BString&, BValue&)">
				<h3>virtual bool query(const BString&amp; text, BValue&amp; value) const;</h3>
				<p>查询表如下：</p><table>
					<tr><td>text-rect</td><td>取得标题文本的绘制矩形，值为BRect textRect。</td></tr>
					<tr><td>text-area</td><td>取得标题文本的布局区域，值为BRect textArea。</td></tr>
					<tr><td>icon-rect</td><td>取得标题图标的绘制矩形，值为BRect iconRect。</td></tr>
					<tr><td>icon-area</td><td>取得标题图标的布局区域，值为BRect iconArea。</td></tr>
					<tr><td>centering</td><td>取得当前自动中心调整是否开启，值为bool centering。</td></tr>
					<tr><td>adapting</td><td>取得当前尺寸自动调整是否开启，值为bool adaping。</td></tr></table>
			</div>
			<div id="BObject::query;()">
				<h3>using BObject::query;</h3>
			</div>
			<div id="event(const BEvent&)">
				<h3>virtual void event(const BEvent&amp; event);</h3>
				<p>在事件处理中监视移动事件，若发出了移动事件则后续不会对框体自动剧中调整。</p>
			</div>
			<div id="popupEvent(const BEvent&)">
				<h3>virtual void popupEvent(const BEvent&amp; event);</h3><p>当被弹出时，重置此对话框的自适应尺寸和居中调整功能。</p>
			</div>
			<div id="closeEvent(const BEvent&)">
				<h3>virtual void closeEvent(const BEvent&amp; event);</h3>
				<p>此方法会发出信号：Signal_Close。</p>
			</div>
			<div id="activeEvent(const BEvent&)">
				<h3>virtual void activeEvent(const BEvent&amp; event);</h3>
				<p>当此对话框转变为活跃状态时，若是最小化状态，则恢复其状态为最大化或常规状态。</p>
			</div>
			<div id="resizeEvent(const BEvent&)">
				<h3>virtual void resizeEvent(const BEvent&amp; event);</h3>
				<p>在尺寸变化时刷新此对话框。</p>
			</div>
			<div id="styleEvent(const BEvent&)">
				<h3>virtual void styleEvent(const BEvent&amp; event);</h3>
				<p>样式表取值：</p><table>
					<tr><td>Value_Icon_Size</td><td>取值为标题图标大小，值为BSize iconSize。</td></tr>
					<tr><td>Value_Align</td><td>取值为标题对齐方式，值为Align titleAlign。</td></tr>
					<tr><td>Value_Spacing</td><td>取值为标题中图标与文本的间隔，值为int spacing。</td></tr>
					<tr><td>Value_Title_Visible</td><td>取值为标题是否显示，值为bool titleVisible。</td></tr></table><p>子样式取值：title</p><table>
					<tr><td>Value_Height</td><td>取值为标题高度，值为int titleHeight。</td></tr>
					<tr><td>Value_Icon_Size</td><td>取值为图标尺寸，值为BSize iconSize。</td></tr>
					<tr><td>Value_Align</td><td>取值为标题的对齐方式，值为Align titleAlign。</td></tr>
					<tr><td>Value_Spacing</td><td>取值为标题图标与文本的间隔，值为int spacing。</td></tr>
					<tr><td>Value_Margin_Left</td><td>取值为标题内容的左边距，值为int left。</td></tr>
					<tr><td>Value_Margin_Top</td><td>取值为标题内容的顶边距，值为int top。</td></tr>
					<tr><td>Value_Margin_Right</td><td>取值为标题内容的右边距，值为int right。</td></tr>
					<tr><td>Value_Margin_Bottom</td><td>取值为标题内容的底边距，值为int bottom。</td></tr></table>
			</div>
			<div id="freshEvent(const BEvent&)">
				<h3>virtual void freshEvent(const BEvent&amp; event);</h3>
				<p>在这里进行标题内容和各按钮的布局调整，并进行自动居中和尺寸适应。</p>
			</div>
			<div id="paintEvent(const BEvent&)">
				<h3>virtual void paintEvent(const BEvent&amp; event);</h3>
				<p>绘制标题时，使用子样式"title"作为本地样式。</p>
			</div>
			<div id="mouseEnterEvent(const BMouseEvent&)">
				<h3>virtual void mouseEnterEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mouseLeaveEvent(const BMouseEvent&)">
				<h3>virtual void mouseLeaveEvent(const BMouseEvent&amp; mouseEvent);</h3>
			</div>
			<div id="mousePressEvent(const BMouseEvent&)">
				<h3>virtual void mousePressEvent(const BMouseEvent&amp; mouseEvent);</h3>
				<p>标记鼠标按下状态。</p>
			</div>
			<div id="mouseReleaseEvent(const BMouseEvent&)">
				<h3>virtual void mouseReleaseEvent(const BMouseEvent&amp; mouseEvent);</h3>
				<p>取消按钮下状态。</p>
			</div>
			<div id="mouseMoveEvent(const BMouseEvent&)">
				<h3>virtual void mouseMoveEvent(const BMouseEvent&amp; mouseEvent);</h3>
				<p>更新鼠标对边调整位置的更新。</p>
			</div>
			<div id="mouseWheelEvent(const BMouseEvent&)">
				<h3>virtual void mouseWheelEvent(const BMouseEvent&amp; mouseEvent);</h3>
				<p>截断滚轮事件。</p>
			</div>
			<div id="mouseDoubleClickEvent(const BMouseEvent&)">
				<h3>virtual void mouseDoubleClickEvent(const BMouseEvent&amp; mouseEvent);</h3>
				<p>处理鼠标双击标题时进行显示状态的切换，即使用框体最大化显示或常规化。</p>
			</div>
		</div>
	</body>
</html>